package com.seckill.rabbitmq;

import com.rabbitmq.client.AMQP;
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;


/**
 * @author yangjunwei
 * @date 2021/11/11 11:20 上午
 */
//@Configuration
public class MQConfig {

    public static final String QUEUE = "queue";
    public static final String MIAOSHA_QUEUE = "miaosha.queue";
    public static final String MIAOSHA_ORDER_QUEUE = "miaosha.order.queue";
    public static final String TOPIC_QUEUE1 = "topic.queue1";
    public static final String TOPIC_QUEUE2 = "topic.queue2";
    public static final String HEADER_QUEUE = "header.queue";
    public static final String TOPIC_EXCHANGE = "topicExchage";
    public static final String FANOUT_EXCHANGE = "fanoutxchage";
    public static final String HEADERS_EXCHANGE = "headersExchage";


    @Bean
    public Queue miaoshaQueue() {
        return new Queue(MIAOSHA_QUEUE,true);
    }


//    /**
//     * 1. Direct直连模式，没有交换机
//     */
//    @Bean
//    public Queue queue() {
//        return new Queue(QUEUE, true);
//    }
//
//    /**
//     * 2. TOPIC模式
//     * routingKey模式
//     * 队列指定routingKey然后绑定到交换机。
//     * 向交换机发消息时，会根据routingKey发送到指定队列
//     */
//    @Bean
//    public Queue topicQueue1() {
//        return new Queue(TOPIC_QUEUE1, true);
//    }
//
//    @Bean
//    public Queue topicQueue2() {
//        return new Queue(TOPIC_QUEUE2, true);
//    }
//
//    /**
//     * 交换机
//     */
//    @Bean
//    public TopicExchange topicExchage() {
//        return new TopicExchange(TOPIC_EXCHANGE);
//    }
//
////    @Bean
////    public Binding topicBinding1() {
////        return BindingBuilder.bind(topicQueue1()).to(topicExchage()).with("topic.key1");
////    }
////    @Bean
////    public Binding topicBinding2() {
////        return BindingBuilder.bind(topicQueue2()).to(topicExchage()).with("topic.#");
////    }
//
//    /**
//     * 3. Fanout模式
//     * 广播模式
//     * 队列与交换机绑定，向交换机发消息，所有队列会收到消息
//     */
//    @Bean
//    public FanoutExchange fanoutExchange() {
//        //交换机
//        return new FanoutExchange(FANOUT_EXCHANGE);
//    }
//
//    @Bean
//    public Binding FanoutBinding1() {
//        //队列绑定交换机
//        return BindingBuilder.bind(topicQueue1()).to(fanoutExchange());
//    }
//
//    @Bean
//    public Binding FanoutBinding2() {
//        return BindingBuilder.bind(topicQueue2()).to(fanoutExchange());
//    }
//
//    /**
//     * 4.Headers模式
//     */
//    @Bean
//    public HeadersExchange headersExchange() {
//        return new HeadersExchange(HEADERS_EXCHANGE);
//    }
//
//    @Bean
//    public Queue headersQueue() {
//        return new Queue(HEADER_QUEUE);
//    }
//
//    @Bean
//    public Binding headerBinding() {
//        Map<String, Object> map = new HashMap<>();
//        map.put("header1", "value1");
//        map.put("header2", "value2");
//        return BindingBuilder.bind(headersQueue()).to(headersExchange()).whereAll(map).match();
//    }


}
